Basic Listing

← Zurück zum Forum

Das habe ich "damals" sogar (wie so vieles) abgetippt, und, iir, in meinem Spielchen "Pipeliners XL" verwendet. 🙂

Sleeπ

AntwortZitat

Sehr interessant... ich bin auch kürzlich auf ein nettes Listing in BASIC gestossen mit 16 Farben bei GR.0 Das werde ich für mein Assembler-Programm nutzen und entsprechend als nächstes in Assembler umschreiben:

10 POKE 106,PEEK(106)-4
20 CB=PEEK(106)
30 GRAPHICS 0
40 CHRSET = CB*256
50 DIM CT(16)
60 FOR I=0 TO 15: CT(I)=17*I:NEXT I
70 FOR I=0 TO 15
80 FOR J=0 TO 7
90 POKE CHRSET+I*8+J,CT(I)
100 NEXT J: NEXT I
110 SCREEN=PEEK(88)+PEEK(89)*256
120 FOR I=0 TO 15: POKE SCREEN+I,I:NEXT I
130 POKE 756,CB
140 POKE 623,192
150 POKE 712,8
160 GOTO 160
AntwortZitat

Das geht besser. Mit 256 Farben in Gr.0. ... hänge ich demnächst mal an diesen Post an.

http://fujiama.eu https://abbuc.de/~atarixle/ BOSS-X - das Finale: https://abbuc.de/~atarixle/?article=bossxfinaleditionprerelease

AntwortZitat

Hallo!

Reden wir jetzt von 256 Farben untereinander per DLI oder die Möglichkeit diese in einer Zeile zu haben?

Grüße

Meine Projekte findest Du hier...

AntwortZitat

256 Farben ... natürlich nur 40 davon in einer Gr.0 Zeile 😁😁😁

http://fujiama.eu https://abbuc.de/~atarixle/ BOSS-X - das Finale: https://abbuc.de/~atarixle/?article=bossxfinaleditionprerelease

AntwortZitat

Da wäre ich sehr interessiert dran. 😀

Meine Projekte findest Du hier...

AntwortZitat

War da nicht auch was mit Switching zwischen Graphics 9 / Graphics 11 in 80 x 192 😉?

Gtx., andY

Ressortleiter Hardware - Save the past and use the future!© andYManOne / Demozoo / Brandnew: Live 24/7 Stream - Industrial - Chiptune/Covers - Vocal Dream - EDM - Indie - own tracks

AntwortZitat

Ich mache es genauso wie bei den 256-Farbenbildern in 80x96. Ich wechsel je Scanline zwischen 9 und 11. Das heißt, ein DLI wird ausgelöst und ich switche nach 9, WSYNC, 11, WSYNC, 9 ... . Dazu erstelle ich einen angepassten Zeichensatz, der im Zusammenspiel mit den inversen Zeichen genau 256 Farben pro Zeichen ergibt. Ein Zeichen ist folglich ein Pixel (40x24 Pixel). Der DLI sieht so aus:

    pha
    lda #FONTDATA_HI
    sta WSYNC
    sta FONTBASE_HW ;FONTBASE Hardware-Register von 756

    lda #192 ; Gr.11
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC
    lda #64 ; Gr.9
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC

    lda #192 ; Gr.11
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC
    lda #64 ; Gr.9
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC

    lda #192 ; Gr.11
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC
    lda #64 ; Gr.9
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC

    lda #192 ; Gr.11
    sta %GPRIOR ; HW-Register von 623
    sta WSYNC
    lda #64 ; Gr.9
    sta %GPRIOR ; HW-Register von 623

    pla
    rti

und wird ab der ersten Zeile installiert:

Folgender C-Code erzeugt den Zeichensatz (der sollte sich eigentlich leicht in BASIC-Code übersetzen lassen, wenn nicht, schiebe ich einen Screenshot nach).

void create256ColorFont(unsigned char fontbase) {
    int i, j, ad=fontbase << 8; // ad=fontbase*256

    for(i=0; i<16; i++) { // for i=0 to 15
        for(j=0; j<16; j+=2) { // for j=0 to 15
            POKE(ad  , (i<<4) | i); // poke ad, i*16
            POKE(ad+1, (j<<4) | j); // poke ad+1,j*16
            memcpy((void*)(ad+2), (void*)ad, 6); // move ad,ad+2,6
            ad+=8; // ad=ad+8
        } // next j
    } // next i

}

Um ein Pixel in Farbe X (zwischen 0 bis 255) zu setzen, wird folgende C-Routine eingesetzt:

void pokePixel(int ad, unsigned char value) {
    POKE(ad, value&1 ? 255^(value>>1) : value>>1);
}

ad ist das Byte im Bildschirmspeicher, also DPEEK(88)+x+y*40 In BASIC heißt das so viel wie:

if value & 1
    POKE ad, 255-(int(value/2))
else
    POKE ad,value/2
endif

Ich hänge mal eine fertige ATR und eine XEX an. Die XEX ist ein C-Programm und die ATR enthält das BASIC-Programm samt zusätzlicher Grafiken. Das Passwort zur ATR lautet "fuji2019" (ohne Anführungszeichen, Kleinbuchstaben, Caps-Lock ist nach dem Booten eingeschaltet).

Anhänge:

http://fujiama.eu https://abbuc.de/~atarixle/ BOSS-X - das Finale: https://abbuc.de/~atarixle/?article=bossxfinaleditionprerelease

AntwortZitat

Hallo!

Danke für die Erklärung und die Beispiele.

Grüße Janko

Meine Projekte findest Du hier...

AntwortZitat